package tugou

// import (
// 	"reflect"
// 	"strings"
// 	"time"
// 	"tugou/logs"
// )

// func VerifyModule(extend ModuleI) reflect.Type { //验证modulei
// 	//验证模块名称
// 	moduleName := extend.OnGetName()
// 	logs.Info("验证[" + moduleName + "]模块")
// 	value := reflect.ValueOf(extend)
// 	extendType := value.Type()
// 	//idType := reflect.TypeOf(string)
// 	//	plyaerGateType := reflect.TypeOf(Gate{})
// 	if value.Kind().String() != "ptr" { //验证接口是否为指针接口
// 		panic("player的方法应该是 func(xx *XX)xxx(){},不满足应该实现指针方法")
// 	}
// 	for i := 0; i < value.NumMethod(); i++ { //批量查看方法
// 		method := extendType.Method(i)
// 		name := method.Name
// 		inNum := method.Type.NumIn()
// 		if strings.HasPrefix(name, Func_Net_Perfix) || strings.HasPrefix(name, Func_Loc_PerFix) { //外网函数和内网

// 			if inNum == 2 || inNum == 3 {
// 				if method.Type.In(1).String() != "string" {
// 					panic(moduleName + "模块的" + name + "函数第一个参数必须是 id string")
// 				}
// 			} else {
// 				panic(moduleName + "模块的" + name + "函数必须有1-2个参数")
// 			}
// 		}
// 	}
// 	logs.Info("验证[" + moduleName + "]模块通过")
// 	return extendType.Elem()
// }

// type ModuleI interface {
// 	//内部使用
// 	getGateInfo() gateInfo
// 	getGateModule() gateModule
// 	setName(name string)                                              //设置名称
// 	run(extend ModuleI, manage ManageMoudleI, data interface{}) error //运行
// 	//外部使用
// 	GetId() string
// 	SetId(string)                    //设置id
// 	StartUpdate(times time.Duration) //设置回调时间
// 	Close()                          //关闭
// 	//外部覆盖使用
// 	OnInit(data interface{}) error
// 	OnGetName() string
// 	OnUpdate()                    //更新
// 	OnPlayerDisconnect(id string) //玩家断线
// 	OnPlayerQuit(id string)
// 	OnPlayerJoin(playerIn, data interface{}) bool
// }
